/**
 * @author yexiebao
 * @date 2025/5/13
 */

public class SortedSquares {
    /**
     * 暴力解法
     * @param nums
     * @return
     */
    public static int[] sortedSquares(int[] nums) {
        int[]numsSquares = new int[nums.length];
        for(int i = 0;i<nums.length;i++){
            numsSquares[i]=nums[i] * nums[i];
        }
        for(int i = 0;i<nums.length;i++){
            for(int j =0;j<nums.length-i;j++){
                if(numsSquares[j]>numsSquares[j+1]){
                    int temp = numsSquares[j];
                    numsSquares[j] = numsSquares[j+1];
                    numsSquares[j+1] = temp;
                }
            }
        }
        return nums;
    }
    /**
     * 双指针解法
     * 思路：
     * 1.比较左右两边取最大；
     * 2.将结果保存在结果数组的末尾；
     * 3.移动指针
     */
    public static int[] sortedSquaresUseDoublePoint(int[] nums) {
        int[]numsSquares = new int[nums.length];
        int left = 0;
        int right = nums.length-1;
        while(left<=right) {
            if (nums[left] * nums[left] > nums[right] * nums[right]) {
                numsSquares[right] = nums[left] * nums[left];
                left++;
            } else {
                numsSquares[right] = nums[right] * nums[right];
                right--;
            }
        }
        return numsSquares;
    }
}